package com.dudu.service.impl;

import java.util.List;

import net.sf.json.JSONObject;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;

import com.dudu.bean.UserBean;
import com.dudu.dao.UserDao;
import com.dudu.model.User;
import com.dudu.service.IUserService;

import core.CoreDao;
import core.CoreDaoInvoke;
/**
 * User service
 * @author gaoxs
 *
 */
public class UserServiceImpl implements IUserService {
	private CoreDao coreDao = CoreDaoInvoke.getInstance();
	private UserDao userDao = new UserDao();
	/**
	 * 根据用户名查询用户对象
	 * @param account
	 * @return
	 */
	public UserBean getUserByAccount(String account) {
		if(StringUtils.isBlank(account)){
			return null;
		}
		User user=userDao.queryByAccount(coreDao, account);
		if(user==null)
			return null;
		return conversion(user);
	}
	/**
	 * 更新用户登录信息数据
	 * @param bean 用户的实体类数据
	 * @return
	 */
	public int updateLastLoginTime(UserBean bean) {
		int result=userDao.updateLastLoginTime(coreDao, conversion(bean));
		return result;
	}
	/**
	 * 修改密码
	 * @param bean 用户的实体类数据
	 * @return
	 */
	public int updatePwd(UserBean bean){
		int result=userDao.updatePwd(coreDao, conversion(bean));
		return result;
	}
	/**
	 * 查询所有用户
	 * @return
	 */
	public List<JSONObject> queryAll(){
		return userDao.queryAll(coreDao);
	}
	/**
	 *  新增用户
	 * @param bean
	 * @return
	 */
	public int insertUser(UserBean bean){
		return userDao.insert(coreDao, conversion(bean));
	}
	/**
	 * 更新用户
	 * @param bean
	 * @return
	 */
	public int updateUser(UserBean bean){
		return userDao.update(coreDao, conversion(bean));
	}
	/**
	 * 根据用户ID查询用户对象
	 * @param userid
	 * @return
	 */
	public UserBean queryById(Integer userid){
		User user=userDao.queryById(coreDao, userid);
		return conversion(user);
	}
	/**
	 * 转化
	 * @param user
	 * @return
	 */
	private UserBean conversion(User user){
		UserBean userBean=new UserBean();
		BeanUtils.copyProperties(user, userBean);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return userBean;
	}
	/**
	 * 转化
	 * @param user
	 * @return
	 */
	private User conversion(UserBean userBean){
		User user=new User();
		BeanUtils.copyProperties(userBean,user);//源,目的
		//PropertyUtils.copyProperties(dest, orig);//目的,源
		return user;
	}
	
}
